"""
批量调整商品库存
确保所有商品的库存不低于指定的最小值（默认10）
"""
from sqlalchemy.orm import Session

from database.base import SessionLocal
from models.goods_models import Goods


def ensure_min_stock(db: Session, min_stock: int = 10) -> int:
    """
    将所有库存低于 min_stock 的商品库存提升到 min_stock

    Args:
        db: SQLAlchemy 会话
        min_stock: 最低库存

    Returns:
        实际被更新的商品数量
    """
    updated = db.query(Goods).filter(Goods.stock < min_stock).update(
        {Goods.stock: min_stock},
        synchronize_session=False
    )
    return updated


def main(min_stock: int = 10):
    db = SessionLocal()
    try:
        updated = ensure_min_stock(db, min_stock=min_stock)
        db.commit()
        print(f"[OK] 已将 {updated} 个商品的库存调整到至少 {min_stock}")
    except Exception as exc:
        db.rollback()
        print(f"[ERROR] 调整库存失败: {exc}")
        raise
    finally:
        db.close()


if __name__ == "__main__":
    # 默认将库存不足的商品补到 10 件
    main(min_stock=10)

